import os
import fnmatch


def check_pdf_exists(data_directory, dir_filename, pdf_filename):
    """
    检查指定目录下的hipot文件夹中是否存在指定的PDF文件。

    :param data_directory: 父目录路径，例如 "d:/data"
    :param pdf_filename: PDF文件名（不带扩展名），例如 "example"
    :return: 如果文件存在，返回True，否则返回False
    """
    # 构建hipot文件夹路径
    hipot_directory = os.path.join(data_directory, dir_filename)
    # 构建PDF文件路径（自动添加 .pdf 扩展名）
    pdf_file_path = os.path.join(hipot_directory, pdf_filename + '.pdf')
    # 检查文件是否存在
    return os.path.isfile(pdf_file_path)


"""
    递归地扫描所有子目录
"""


def check_pdf_in_subdirs(base_path, pdf_filename):
    results = {}
    # 递归遍历所有子目录
    for root, dirs, files in os.walk(base_path):
        for subdir in dirs:
            subdir_path = os.path.join(root, subdir)
            pdf_path = os.path.join(subdir_path, pdf_filename + '.pdf')
            # 检查子目录中是否存在指定的PDF文件
            if os.path.isfile(pdf_path):
                results[subdir_path] = True
            else:
                results[subdir_path] = False
    return results

"""
    递归地扫描所有子目录
"""

def check_pdf_in_subdirs_extend(base_path, pdf_filename):
    # 递归遍历所有子目录
    for root, dirs, files in os.walk(base_path):
        for subdir in dirs:
            subdir_path = os.path.join(root, subdir)
            pdf_path = os.path.join(subdir_path, pdf_filename + '.pdf')
            # 检查子目录中是否存在指定的PDF文件
            if os.path.isfile(pdf_path):
                return True
    return False

def check_pdf_in_subdirs_N(base_path, partial_pdf_name):
    """
    递归扫描所有子目录，检查是否存在以 .pdf 结尾且名称包含指定部分的文件。

    参数:
    - base_path: str，起始扫描目录路径。
    - partial_pdf_name: str，模糊匹配的文件名部分。

    返回:
    - bool: 如果找到匹配的 PDF 文件，则返回 True，否则返回 False。
    """
    # 遍历所有子目录和文件
    for root, _, files in os.walk(base_path):
        for file in files:
            # 检查文件是否为 .pdf 且符合模糊匹配
            if fnmatch.fnmatch(file, f"*{partial_pdf_name}*.pdf"):
                return True
    return False